package com.wyix;

/**
 * 获取 Class 对象（三种方式）
 *
 * @author wangdx
 * @since 2025/8/5
 */
public class ClassObjectDemo {
    public static void main(String[] args) throws ClassNotFoundException {
        // 方式1：通过对象获取（已知实例）
        User user = new User();
        Class<?> clazz1 = user.getClass();

        // 方式2：通过类名获取（编译期已知类）
        Class<?> clazz2 = User.class;

        // 方式3：通过全类名获取（运行时动态加载）
        Class<?> clazz3 = Class.forName("com.wyix.User");

        // 三种方式获取的是同一个Class对象
        System.out.println(clazz1 == clazz2); // true
        System.out.println(clazz1 == clazz3); // true
    }
}

class User {
    private String name;
    private int age;

    public User() {
    }

    private User(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    private void setName(String name) {
        this.name = name;
    }
}